package team.cw.land.test.activiti.service;

import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import team.cw.land.test.activiti.dto.ActivitiDTO;
import team.cw.land.test.activiti.dto.ActivitiHistoryDTO;

import javax.annotation.Resource;
import java.io.ByteArrayOutputStream;
import java.util.List;
import java.util.Map;

public interface IActivitiService {


    /**
     * 启动流程
     * @param processName 流程名称
     * @param userMap 用户map
     * @return 流程id
     */
    String startProcess(String processName, Map<String,Object> userMap);


    /**
     * 查询用户需要处理的任务列表
     * @param userName 用户名称
     * @return 任务列表
     */
    List<Task> myTaskList(String userName);


    /**
     * 完成流程
     * @param userName 用户名称
     * @param processId 流程id
     * @param taskId 任务id
     * @param comments 评论列表
     * @param map 数据
     */
    void myCompleteProcess(String userName,String processId,String taskId,List<String> comments,Map<String,Object> map);

    /**
     * 判断流程是否完成
     * @param processId
     * @return true完成,false未完成
     */
    boolean isFinished(String processId);

    /**
     * 查询流程列表
     * @param processName 流程名称
     */
    List<ActivitiDTO> getActivitiHistoryList(String processName);

    /**
     * 查询流程详细历史数据
     * @param processId 流程id
     */
    List<ActivitiHistoryDTO> getActivitiHistoryInfo(String processId);

    /**
     * 查询流程进度图
     * @param processId 流程id
     * @return 图片流
     */
    byte[]  getProcessImg(String processId);


    /**
     * 删除流程
     * @param processId 流程id
     * @return true
     */
    boolean deleteProcessId(String processId);


}
